C# 產生 EXCEL 的第三方套件評估
標題 | Microsoft.Office.Interop.Excel | NPOI | EPPlus | ClosedXml |
---|---|---|---|---|
描述 | This an assembly you can use for Excel 2013/2016/2019 COM interop, generated and signed by Microsoft. | a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop. | EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx). | ClosedXML is a .NET library for reading, manipulating and writing Excel 2007+ (.xlsx, .xlsm) files. It aims to provide an intuitive and user-friendly interface to dealing with the underlying OpenXML API. |
官網 | 官網 | 官網 | 官網 | 官網 |
依賴性 | 需要安裝 Microsoft Office | 無依賴性 | 無依賴性 | 無依賴性 |
性能 | 最慢 | 速度快 | 速度快 | 速度慢,ClosedXML可能不適合大量資料,存檔時間也是另外一個問題,我測試產生500頁A4(大約2萬多Rows)光存檔就花了200秒以上 |
共享性 | 最差,因官方Office 於設計時被定義為個人軟體,所以該Library對於多人同時操作與共享的支援性較差,對於一個Web Service而言,容易造成Excel程序無法被正確釋放,Server的記憶體被大量占用,進而導致Server的不穩定。 | 不支援大資料量以及多sheet的匯出 | 最佳,可大量資料操作且吃記憶體較小 | 記憶體使用量較高,30欄位 x 10萬筆資料的 excel 在過程中,closedxml 用了約1G的記憶體,epplus 卻不到 400M |
兼容性 | 差,不同的office版本之間可能會有兼容問題 | NPOI目前支援.xls與.xlsx,但是兩種格式的文件於NPOI內部的元件設計並不相同。若開發的系統欲同時支援兩種格式,則必須撰寫兩份不同的程式碼來進行文件的產出。 | 僅支援.xlsx的格式,不支援2003版的Excel | 最佳,檔案相容性測試又比NPOI及EPPlus好 |
商業授權 | 需要購買 Microsoft Office | 商用需NPOI 付費授權 | EPPlus5.0以上版本要商業授權碼 | MIT 授權 |
結論:
目前最佳免費方案是 EPPlus 4.5.3
基礎的編輯 4.X 完全可勝任。
日前因為有需要用到,研究了一下關於NPOI的部分,在此補充,若有誤煩請指正。
在github中有寫明是Apache License以及Commercial use,商業用途應該是不用另外付錢的。
我自己寫的Component中,一個excel是可以匯出多個sheet的,我自己是使用C#的DataSet格式做處理,至於大資料量我並沒有研究,因此不甚了解。